#ifndef __LRUCACHE_HPP__
#define __LRUCACHE_HPP__

#include <string>
#include <list>
#include <unordered_map>

using std::string;
using std::list;
using std::unordered_map;

class Cache;

//缓存类
class LRUCache
{
public:
    LRUCache(int num=1000);//构造函数
    LRUCache(const Cache& cache);//构造函数
    ~LRUCache();//析构函数

    void addElement(const string& key,const string& value);//往缓存中添加数据
    void readFromFile(const string& filename);//从文件中读取缓存信息
    void writeToFile(const string& filename);//将缓存信息写入缓存
    void update(const Cache& rhs);//更新缓存信息
    list<string,string>& getPendingUpdateList();//获取待更新的结点list

private:
    unordered_map<string,iterator> _hashMap;//查找缓存用
    list<string,string> _resultsList;//保存键值对
    list<string,string> _pendingUpdateList;//等待更新的结点信息
    int _capacity;//缓存结点容量

};


#endif
